<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 5.4.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/astronaut32.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/astronaut16.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">

<link rel="stylesheet" href="fonts.googleapis.com/css?family=EB Garamond:300,300italic,400,400italic,700,700italic|Cinzel Decorative:300,300italic,400,400italic,700,700italic|Noto Serif SC:300,300italic,400,400italic,700,700italic|Source Code Pro:300,300italic,400,400italic,700,700italic&display=swap&subset=latin,latin-ext">
<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">
  <link rel="stylesheet" href="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.css">
  <link rel="stylesheet" href="/lib/pace/pace-theme-pace-theme-minimal.min.css">
  <script src="/lib/pace/pace.min.js"></script>

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"fat_fat_where_are_you.gitee.io","root":"/","scheme":"Gemini","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":true,"show_result":true,"style":"mac"},"back2top":{"enable":false,"sidebar":false,"scrollpercent":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":true,"mediumzoom":false,"lazyload":true,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
  </script>

<link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@500&display=swap" rel="stylesheet">
  <meta name="description" content="​">
<meta property="og:type" content="article">
<meta property="og:title" content="毕业论文">
<meta property="og:url" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828.html">
<meta property="og:site_name" content="肥肉啊肥肉你在哪">
<meta property="og:description" content="​">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image002.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image004.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image006.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image008.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image010.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image012.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image014.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image016.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image018.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image020.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image022.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image024.gif">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image026.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image028.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image030.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image032.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image034.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image036.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image038.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image040.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image042.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image044.jpg">
<meta property="og:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image046.jpg">
<meta property="article:published_time" content="2022-02-28T11:16:00.000Z">
<meta property="article:modified_time" content="2022-02-28T11:16:00.000Z">
<meta property="article:author" content="肥肉啊肥肉你在哪">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://fat_fat_where_are_you.gitee.io/archives/e6cd828/clip_image002.jpg">

<link rel="canonical" href="http://fat_fat_where_are_you.gitee.io/archives/e6cd828.html">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-CN'
  };
</script>
<link rel="stylesheet" type="text/css" href="/css/injector/main.css"><link rel="preload" as="style" href="/css/injector/light.css"><link rel="preload" as="style" href="/css/injector/dark.css">
  <title>毕业论文 | 肥肉啊肥肉你在哪</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

  <script src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/font-awesome/css/font-awesome.min.css">

</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">肥肉啊肥肉你在哪</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="main-menu menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a>

  </li>
        <li class="menu-item menu-item-tags">

    <a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a>

  </li>
        <li class="menu-item menu-item-categories">

    <a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a>

  </li>
        <li class="menu-item menu-item-movies">

    <a href="/movies/" rel="section"><i class="fa fa-film fa-fw"></i>观影</a>

  </li>
        <li class="menu-item menu-item-books">

    <a href="/books/" rel="section"><i class="fa fa-book fa-fw"></i>阅读</a>

  </li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>
</nav>



  <div class="search-pop-overlay">
    <div class="popup search-popup">
        <div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocapitalize="off" placeholder="搜索..." spellcheck="false" type="search" class="search-input">
  </div>
  <span class="popup-btn-close">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div id="search-result">
  <div id="no-result">
    <i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>
  </div>
</div>

    </div>
  </div>

</div>
    </header>

    
  <div class="reading-progress-bar"></div>


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://fat_fat_where_are_you.gitee.io/archives/e6cd828.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/touxiang.gif">
      <meta itemprop="name" content="肥肉啊肥肉你在哪">
      <meta itemprop="description" content>
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="肥肉啊肥肉你在哪">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          毕业论文
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2022-02-28 19:16:00" itemprop="dateCreated datePublished" datetime="2022-02-28T19:16:00+08:00">2022-02-28</time>
            </span>

          
          
          <br>
            <span id="/archives/e6cd828.html" class="post-meta-item leancloud_visitors" data-flag-title="毕业论文" title="阅读次数">
              <span class="post-meta-item-icon">
                <i class="fa fa-eye"></i>
              </span>
              <span class="post-meta-item-text">阅读次数：</span>
              <span class="leancloud-visitors-count"></span>
            </span>
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/archives/e6cd828.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/archives/e6cd828.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>24k</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>22 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <p>​    <span id="more"></span></p>
<h1 id="一种企业人事管理系统的设计与实现"><a href="# 一种企业人事管理系统的设计与实现" class="headerlink" title="一种企业人事管理系统的设计与实现"></a>一种企业人事管理系统的设计与实现 </h1><h2 id="设计总说明"><a href="# 设计总说明" class="headerlink" title="设计总说明"></a> 设计总说明 </h2><p> 当前，信息技术飞速发展，企业在技术创新的浪潮中只有不断地推陈出新才能迸发蓬勃的生命力，很明显的一点就是技术进步对企业管理效率的推进作用。随着企业分工愈加明确，人员也逐渐呈现集中且流动频繁的态势，企业的结构变得越来越复杂，管理困难与日俱增。更多的机关、单位和企业认识到信息化的重要性，积极引进这一先进理念，结合实际管理需求，推进自身管理信息化改革进程，逐步以电子信息代替纸质资料，希望实现员工价值最大化，增加更多福利。随着时间的推移，企业人力资源部门积累了大量的文档和数据，这对人员信息的存储、检索、更新和维护提出了很大的挑战，很容易造成信息的丢失。为了提高人事信息的保密性、长期存储和快速检索，便于对相关信息进行分析和统计，有必要开发企业人事管理系统，通过计算机技术对企业人事信息实行数字化管理。将人事管理信息系统应用于企业管理，不仅可以提高企业管理的效率，还可以大大增强人事管理信息的安全性，加快企业的信息化管理进程。</p>
<p>本系统以完整的人力资源工作流程为基础，与人力资源部门的实际需求相联系，并创建了一个能够整合中小型企业人力资源管理重要部分的企业人事管理系统。该系统有一个友好的用户界面，易于使用，功能齐全。本系统整体通过 B/S 架构模式进行系统开发与构建，为满足相关要求，服务器端使用当下流行的 Springboot 框架搭建，保证了系统开发的效率与稳定。并通过 Shiro 框架进行人员登录和身份验证，进一步确保了系统运行的安全性。对于前端，在成熟的 Layui 框架下，通过前端最重要的三大技术 JavaScript、HTML 和 CSS 语言的配合使用，实现了页面的交互效果。本系统开发运行环境是 Windows 10 + IDEA 2020 + JDK 1.8 + Mysql 5.7。在调查了每个部门和客户的需求后，初步定义了功能需求和业务数据流。随后，遵照相关设计原则，确定了系统的整体架构和数据库模型，完成了系统的六个功能模块（档案管理、工资管理、考勤管理、培训管理、招聘管理）的具体实现，最终对整个系统进行了详细测试并对整个开发工作进行了总结与展望。</p>
<p>该系统最大的特点是其强大而灵活的权限控制功能。管理员可以通过配置控制所有菜单和按钮的功能。默认情况下，系统具有三个角色: 管理员，人事员工和普通员工。拥有不同菜单权限与数据权限的用户对各个页面的操作的可执行范围不尽相同，最大程度地确保了数据的产生与传输过程中安全性和保密性。通过该系统，可以方便地输入企业相关信息，解决企业管理问题，促进企业多元化发展，在提升员工工作效率的同时，充分降低企业人力资源管理的投入成本，使企业在管理能力上大幅提升，并强化企业的核心竞争力。</p>
<p><strong>关键词：</strong>企业人事管理系统；B/S 架构；SprigBoot 框架；Mysql 数据库；权限配置</p>
<h2 id="GENERAL-DESIGN-DESCRIPTION"><a href="#GENERAL-DESIGN-DESCRIPTION" class="headerlink" title="GENERAL DESIGN DESCRIPTION"></a>GENERAL DESIGN DESCRIPTION</h2><p>At present, the rapid development of information technology, enterprises in the wave of technological innovation can only burst forth with vigor and vitality by constantly pushing out new ideas, and it is obvious that technological progress is the promotion of enterprise management efficiency. As the division of labor becomes clearer and the personnel gradually becomes more concentrated and frequent, the structure of enterprises becomes more and more complex and the management difficulties increase day by day. More organs, units and enterprises recognize the importance of information technology, actively introduce this advanced concept, combine with the actual management needs, promote their own management information reform process, and gradually replace paper information with electronic information, hoping to maximize the value of employees and increase more benefits. With the passage of time, the enterprise human resources department has accumulated a large number of documents and data, which poses a great challenge to the storage, retrieval, updating and maintenance of personnel information and can easily result in the loss of information. In order to improve the confidentiality, long-term storage and rapid retrieval of personnel information, and to facilitate the analysis and statistics of relevant information, it is necessary to develop an enterprise personnel management system and implement digital management of enterprise personnel information through computer technology. Applying the personnel management information system to enterprise management can not only improve the efficiency of enterprise management, but also greatly enhance the security of personnel management information and accelerate the process of information management of enterprises.</p>
<p>The system is based on a complete HR workflow, linked to the actual needs of the HR department, and creates an enterprise personnel management system capable of integrating important parts of HR management in small and medium-sized enterprises. The system has a friendly user interface, is easy to use and is fully functional. The system as a whole is developed and built through the B/S architecture model. To meet the relevant requirements, the server side is built using the popular Springboot framework, which ensures the efficiency and stability of the system development. The system is further secured by Shiro framework for personnel login and identity verification. For the front-end, under the mature Layui framework, the three most important front-end technologies, JavaScript, HTML and CSS, are used together to achieve the interactive effect of the page. The system development runtime environment is Windows 10 + IDEA 2020 + JDK 1.8 + Mysql 5.7. After investigating the needs of each department and customer, the functional requirements and business data flow were initially defined. Then, following the relevant design principles, the overall architecture and database model of the system were determined, the concrete implementation of the six functional modules of the system (file management, payroll management, attendance management, training management, recruitment management) was completed, and finally the whole system was tested in detail and the whole development work was summarized and prospected.</p>
<p>The most important feature of the system is its powerful and flexible authority control function. The administrator can control the functions of all menus and buttons through configuration. By default, the system has three roles: administrator, personnel staff and general staff. Users with different menu permissions and data permissions have different scope of executable operations on each page, ensuring maximum security and confidentiality in the process of data generation and transmission. Through this system, enterprise related information can be easily inputted, enterprise management problems can be solved, enterprise diversification can be promoted, and the input cost of enterprise human resource management can be fully reduced while employee efficiency is improved, so that the enterprise can be significantly improved in management capability and the core competitiveness of the enterprise can be strengthened.</p>
<p><strong>Keywords:</strong> enterprise personnel management system; B/S architecture; SprigBoot framework; Mysql database; permission configuration</p>
<p>目 录</p>
<p><a href="#_Toc73889980">第 1 章 绪论. 1</a></p>
<p><a href="#_Toc73889981">1.1 研究背景与意义. 1</a></p>
<p><a href="#_Toc73889982">1.2 国内外研究现状. 1</a></p>
<p><a href="#_Toc73889983">1.3 本文主要研究内容. 1</a></p>
<p><a href="#_Toc73889984">1.4 本文的组织结构. 2</a></p>
<p><a href="#_Toc73889985">第 2 章 系统需求分析. 3</a></p>
<p><a href="#_Toc73889986">2.1 系统可行性分析. 3</a></p>
<p><a href="#_Toc73889987">2.2 功能需求分析. 3</a></p>
<p><a href="#_Toc73889988">2.2.1 档案管理. 3</a></p>
<p><a href="#_Toc73889989">2.2.2 工资管理. 4</a></p>
<p><a href="#_Toc73889990">2.2.3 考勤管理. 5</a></p>
<p><a href="#_Toc73889991">2.2.4 培训管理. 5</a></p>
<p><a href="#_Toc73889992">2.2.5 招聘管理. 7</a></p>
<p><a href="#_Toc73889993">2.2.6 系统管理. 8</a></p>
<p><a href="#_Toc73889994">2.3 本章小结. 9</a></p>
<p><a href="#_Toc73889995">第 3 章 系统设计. 10</a></p>
<p><a href="#_Toc73889996">3.1 系统设计原则. 10</a></p>
<p><a href="#_Toc73889997">3.2 系统技术架构. 10</a></p>
<p><a href="#_Toc73889998">3.3 系统功能架构. 11</a></p>
<p><a href="#_Toc73889999">3.4 数据库设计. 11</a></p>
<p><a href="#_Toc73890000">3.4.1 数据库建模工具. 11</a></p>
<p><a href="#_Toc73890001">3.4.2 数据库表设计. 12</a></p>
<p><a href="#_Toc73890002">3.5 本章小结. 17</a></p>
<p><a href="#_Toc73890003">第 4 章 系统实现. 18</a></p>
<p><a href="#_Toc73890004">4.1 系统开发运行环境. 18</a></p>
<p><a href="#_Toc73890005">4.2 系统开发技术介绍. 18</a></p>
<p><a href="#_Toc73890006">4.2.1 B/S 开发模式. 18</a></p>
<p><a href="#_Toc73890007">4.2.2 MVC 设计模式. 18</a></p>
<p><a href="#_Toc73890008">4.2.3 SpringBoot 框架. 19</a></p>
<p><a href="#_Toc73890009">4.2.4 Shiro 安全框架. 19</a></p>
<p><a href="#_Toc73890010">4.3 系统运行结果. 20</a></p>
<p><a href="#_Toc73890011">4.3.1 登录界面. 20</a></p>
<p><a href="#_Toc73890012">4.3.2 系统主界面. 20</a></p>
<p><a href="#_Toc73890013">4.3.3 登录界面. 21</a></p>
<p><a href="#_Toc73890014">4.3.4 合同管理界面. 21</a></p>
<p><a href="#_Toc73890015">4.3.5 工资管理界面. 22</a></p>
<p><a href="#_Toc73890016">4.3.6 考勤管理界面. 22</a></p>
<p><a href="#_Toc73890017">4.3.7 个人计划界面. 23</a></p>
<p><a href="#_Toc73890018">4.3.8 用户管理界面. 23</a></p>
<p><a href="#_Toc73890019">4.3.9 部门管理界面. 24</a></p>
<p><a href="#_Toc73890020">4.3.10 角色管理界面. 24</a></p>
<p><a href="#_Toc73890021">4.3.11 菜单管理界面. 25</a></p>
<p><a href="#_Toc73890022">4.4 本章小结. 25</a></p>
<p><a href="#_Toc73890023">第 5 章 系统测试. 26</a></p>
<p><a href="#_Toc73890024">5.1 测试意义. 26</a></p>
<p><a href="#_Toc73890025">5.2 功能测试. 26</a></p>
<p><a href="#_Toc73890026">5.2.1 档案管理模块测试. 26</a></p>
<p><a href="#_Toc73890027">5.2.2 工资管理模块测试. 26</a></p>
<p><a href="#_Toc73890028">5.2.3 考勤管理模块测试. 26</a></p>
<p><a href="#_Toc73890029">5.2.4 培训管理模块测试. 27</a></p>
<p><a href="#_Toc73890030">5.2.5 招聘管理模块测试. 27</a></p>
<p><a href="#_Toc73890031">5.2.6 系统管理模块测试. 27</a></p>
<p><a href="#_Toc73890032">5.3 测试结论. 28</a></p>
<p><a href="#_Toc73890033">5.4 本章小结. 28</a></p>
<p><a href="#_Toc73890034">第 6 章 总结与展望. 30</a></p>
<p><a href="#_Toc73890035">6.1 总结. 30</a></p>
<p><a href="#_Toc73890036">6.2 展望. 30</a></p>
<p><a href="#_Toc73890037">参考文献. 32</a></p>
<p><a href="#_Toc73890038">致 谢. 34</a></p>
<h2 id="第 1 章 - 绪论"><a href="# 第 1 章 - 绪论" class="headerlink" title="第 1 章 绪论"></a>第 1 章 绪论 </h2><h3 id="1-1- 研究背景与意义"><a href="#1-1- 研究背景与意义" class="headerlink" title="1.1 研究背景与意义"></a>1.1 研究背景与意义</h3><p> 在 21 世纪，越来越多的行业和地方开始使用信息技术，他们也越来越依赖互联网来解决问题。无论是在私人聊天还是正常的办公室工作中，互联网都逐渐影响着人们的生活。互联网技术消除了日常办公工作中的边界和沟通障碍，同时让管理者用更细致、更有力的手段进行管理，催生了企业管理系统。随着科学技术的进步和数字信息技术的普及，企业管理系统的作用不再局限于简单的功能，而是扩展到企业的各个方面，范围越来越大，性能越来越复杂，它关系到企业运营、销售、开发和金融等各个领域，发挥着良好的作用。</p>
<p>人力资源信息在企业管理中占有重要地位，是保证企业蓬勃发展的基石。由于人事工作中包含的管理信息相对复杂，往往需要更新和维护，工作的准确性和细致性相对较高[4]。如果用传统的人工方法来管理人员信息，会花费大量的时间和人力来维护档案，不仅效率低下，而且信息的安全性相对较差，容易出错。随着时间的推移，企业人力资源部门积累了大量的文档和数据，这对人员信息的存储、检索、更新和维护提出了很大的挑战，很容易造成信息的丢失。为了提高人事信息的保密性、长期存储和快速检索，便于对相关信息进行分析和统计，有必要开发企业人事管理系统，通过计算机技术对企业人事信息实行数字化管理。将人事管理信息系统应用于企业管理，不仅可以提高企业管理的效率，还可以大大增强人事管理信息的安全性，加快企业的信息化管理进程。</p>
<h3 id="1-2- 国内外研究现状"><a href="#1-2- 国内外研究现状" class="headerlink" title="1.2 国内外研究现状"></a>1.2 国内外研究现状 </h3><p> 在我国，信息系统的研究起步与发展都和国外有一定的差距。导致这种情况的原因有很多。长期的技术落后使得我国对计算机的研究起步比西方要晚得多，这是一个重要原因。管理信息的能力也是一个国家的核心竞争力之一。</p>
<p>中国要想有效拉近与国外发达国家的距离，值得要做的一点就是提高管理信息资源的能力。众所周知，全球化已成为当今世界发展的必然趋势。要想在与众多发达国家包竞争中拔得头筹，就一定加大力度建设信息基础设施。同时，为了使社会和经济效益最大化，我们大力支持各种能够使信息管理更加有效的软件和系统，如数据库和信息管理系统。在信息管理系统方面，我国环境中的信息系统发展水平落后于西方国家，我国的相关研究比西方国家晚了 20 年左右，整体水平有较大差距。但我们也在不断的探索与进步中，并取得了一定的成绩。近年来，中国已经开发了许多优秀的管理信息系统。例如，阿里巴巴等公司不仅开发了优秀的企业人力资源管理系统，而且实现了对企业人力资源信息的有效管理，利用云计算、分布式架构等先进技术，建立了更先进的信息管理系统，实现了对海量数据的有效管理[8]。</p>
<h3 id="1-3- 本文主要研究内容"><a href="#1-3- 本文主要研究内容" class="headerlink" title="1.3 本文主要研究内容"></a>1.3 本文主要研究内容 </h3><p> 本系统以完整的人力资源工作流程为基础，与人力资源部门的实际需求相联系，并创建了一个能够整合中小型企业人力资源管理重要部分的企业人事管理系统。该系统有一个友好的用户界面，易于使用，功能齐全。该系统主要涵盖绩效考核、招聘管理、档案管理、工资管理、考勤管理、培训管理、制度管理等。这些功能模块原则上可以保证中小型企业的人力资源管理的有效发展。此外，灵活的授权管理功能允许管理员通过分配不同角色的用户来管理他们的菜单和按钮权限。</p>
<p>具体研究内容如下：</p>
<p>1. 探讨如何有意义地展示和管理员工信息、部门级别以及在人事信息管理系统中对人力资源管理任务有用的其他信息[6]。首先，实施这些功能将使添加、删除、更改和管理人力资源和部门信息变得更加容易。通过消除人力资源信息部门工作人员整理纸质文件、频繁接听电话和回答多个问题的繁琐工作的困扰，大大提高了效率，并腾出时间来学习更深入的人力资源信息管理。</p>
<p>2. 探讨如何将传统的人力资源流程和工作计划落实到系统中，如调职请求、面试安排和招聘计划等。通过实现这些功能，员工不必因为在传统的人力资源流程中找不到合适的人而在不同的办公室之间奔走，也不必再因为找不到接口人而无功而返。</p>
<p>该系统的功能基本包括了管理人事信息的主要模块。人事部门的工作人员只需要登录人事信息管理系统，就可以摆脱原来枯燥的文件，通过友好的界面直接进入系统，对工作人员的基本信息、学历信息、简历信息等个人信息和部门信息，实现快速查询和管理。此外，还实现菜单管理、权限配置等系统管理功能。普通用户可以登录系统，通过操作界面的相应模块访问或修改个人信息。该系统的引入消除了各种传统流程的不便，大大提高了工作人员的工作效率，减少了纸张的浪费，为绿色环保事业事贡献了力量。</p>
<h3 id="1-4- 本文的组织结构"><a href="#1-4- 本文的组织结构" class="headerlink" title="1.4 本文的组织结构"></a>1.4 本文的组织结构 </h3><p> 第一章是绪论。本章从当前的现实出发，解释了人事信息管理系统在企业管理中的重要性，展示了企业对该系统的殷切期望，最后介绍了该系统的主要内容和重点要领。</p>
<p>第二章系统需求分析，首先对系统可行性进行了分析，并根据人事信息管理部门的实际需要分析了系统的需求，绘制了系统的用例图。</p>
<p>第三章系统设计，确立了系统设计所需遵循的原则，对系统的技术架构与功能架构进行了展示与说明，以及一些关键数据库表的信息的展示。</p>
<p>第四章系统的实现，介绍了系统实现所采用的开发技术，描述了系统实现功能的具体操作。向读者展示一些主要功能界面的图片。</p>
<p>第五章系统测试，使用具体案例来测试系统。这些测试涵盖了广泛的应用场景。 测试完成后并对结果进行了分析。</p>
<p>第六章总结与展望，通过前面几章的具体描述，总结了对整个系统进行的工作成果，对系统的可扩展性提出了期望，并为人事信息系统领域的未来研究提出了展望。</p>
<h2 id="第 2 章 - 系统需求分析"><a href="# 第 2 章 - 系统需求分析" class="headerlink" title="第 2 章 系统需求分析"></a>第 2 章 系统需求分析 </h2><h3 id="2-1- 系统可行性分析"><a href="#2-1- 系统可行性分析" class="headerlink" title="2.1 系统可行性分析"></a>2.1 系统可行性分析</h3><p> 系统可行性分析是系统开发前期的必要过程，主要是对系统的整体设计难度、可能遇到的风险、系统预期效果和系统实现所带来的效益进行全面的研究和分析，包括以下几个方面：经济、技术、运行和法律。</p>
<ol>
<li><strong>经济可行性</strong></li>
</ol>
<p>企业人事管理系统开发的主要目标之一就是减少管理过程中一切不必要的经济开支，摆脱繁琐的人力工作普及无纸化系统办公，因此有必要对开发的各个阶段进行全面透彻的分析，包括用户需求分析、开发成本分析、运行和维护成本分析等，尽最大可能减少人力资源成本的消耗，这是一个非常重要的问题[3]。</p>
<ol start="2">
<li><strong>技术可行性</strong></li>
</ol>
<p>本文所使用的技术，包括用于前端的 Layui 框架，用于业务逻辑处理的 SSM，以及用于数据存储的 MySQL 数据库，都是当下互联网开发领域流行并普遍使用且经过多年磨练与改良后成熟稳定的技术。它们不仅具有出色的可移植性和可扩展性，而且不会出现不可克服的复杂的技术问题，可以用来完成系统开发和测试。</p>
<ol start="3">
<li><strong>运行可行性</strong></li>
</ol>
<p>系统的运行维护需要一些工作人员进行日常技术处理，以及对重大问题进行故障排除、报告和分析，并制定应急计划以促进应急反应。</p>
<ol start="4">
<li><strong>法律可行性</strong></li>
</ol>
<p>对于企业人事管理系统，不管是开发测试，还是运行维护，均未违反我国的现行法律和国家政策。相反，国家大力倡导信息化建设，相关规章政策也为系统的产生带来不可磨灭的作用。</p>
<h3 id="2-2- 功能需求分析"><a href="#2-2- 功能需求分析" class="headerlink" title="2.2 功能需求分析"></a>2.2 功能需求分析 </h3><p> 系统的功能需求分析是任何开发设计工作的前提和基础。本章将就系统功能分模块分层次的进行分析与评估，为之后代码实现具体功能提供保障与参考依据。经过调研考察，根据企业人事管理工作的需求汇总，确定本系统需要具备与保留的功能包括：档案管理，培训管理，工资管理，招聘管理，考勤管理，系统管理。</p>
<p>下面将对上述功能进行详细的描述。</p>
<h4 id="2-2-1- 档案管理"><a href="#2-2-1- 档案管理" class="headerlink" title="2.2.1 档案管理"></a>2.2.1 档案管理 </h4><p> 档案管理包括员工档案管理和合同管理。</p>
<ol>
<li><strong>员工档案管理</strong></li>
</ol>
<p>员工档案管理即对人事部门所掌管的人员档案信息进行汇总与整理，其中除了包括对企业员工基本信息的录入、删除、查询以及修改等基本操作外，同时还应允许人事部门员工对其他员工的部门单位归属、人员入职离职等人事调动方面信息进行调整[2]；调研发现员工所必要的状态和属性主要包括：员工的工号、员工的姓名、员工所属的部门、员工的手机号码、学历、年龄和入职日期等信息。并且此模块对于普通员工仅能查看查询本人个人信息，而无编辑增删等权限</p>
<p>员工档案管理的用例图如图 2-1 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image002.jpg" alt="图 2-1 员工档案管理用例图"></p>
<ol start="2">
<li><strong>合同管理</strong></li>
</ol>
<p>合同管理使得人事工作告别了频繁翻阅纸质合同的重复过程，告别了一个个难以汇总统计的 excel 表格，大大节省了时间，降低了人力成本。通过合同管理员工可以轻松的实现合同的新增、删除、修改与查询。每个合同包括合同的名称、合同的金额、合同的甲方、合同的乙方、签订的时间等信息。</p>
<p>合同管理的用例图如图 2-2 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image004.jpg" alt="图 2-2 员工档案管理用例图"></p>
<h4 id="2-2-2- 工资管理"><a href="#2-2-2- 工资管理" class="headerlink" title="2.2.2 工资管理"></a>2.2.2 工资管理 </h4><p> 员工工资管理是每个员工最为关注的功能，它需要稳定的记录员工的工号、员工的姓名、对应发放的工资等，并对信息进行留痕保留方便日后统计或寻迹。人事部员工可对员工工资信息进行增加、修改、删除、查询等操作，而普通员工仅限对工资信息的查询查看操作。</p>
<p>工资管理的用例图如图 2-3 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image006.jpg" alt="图 2-3 工资管理用例图"></p>
<h4 id="2-2-3- 考勤管理"><a href="#2-2-3- 考勤管理" class="headerlink" title="2.2.3 考勤管理"></a><strong>2.2.3 考勤管理 </strong></h4><p> 考勤管理模块是每个企业都必要的基础功能模块，负责记录与处理企业员工每日的考勤信息情况。例如上下班打卡时间统计、迟到早退情况信息记录都与每位员工日常工作息息相关，且后期可扩展与工资计算绩效考核情况挂钩。因此，企业员工使用该模块，主要是进行上下班打卡、查询本人考勤情况等功能。</p>
<p>本模块主要信息包括企业员工的姓名、工作日期、上班时间、下班时间、创建时间、每日考勤状态等信息。</p>
<p>考勤管理的用例图如图 2-4 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image008.jpg" alt="图 2-4 考勤管理用例图"></p>
<h4 id="2-2-4- 培训管理"><a href="#2-2-4- 培训管理" class="headerlink" title="2.2.4 培训管理"></a><strong>2.2.4 培训管理 </strong></h4><p> 培训管理分为：个人计划、工作日报、转正申请、培训计划四个子模块。其中，前三个模块为普通员工日常参与培训、汇报总结的重要途径，培训计划模块保障了人事部员工合理安排培训任务，制定科学的培训计划的顺利进行。</p>
<ol>
<li><strong>个人计划</strong></li>
</ol>
<p>该系统中，员工可以根据自己的要求制定个人工作计划。计划的开始时间和结束时间可以自由调整，这使得计划可以是一个相对长期的、宏大的计划，或者是一个相对密切和具体的安排。此外，个人计划还包括的属性有员工的姓名、计划主题、计划内容、计划状态与创建时间等。</p>
<p>个人计划的用例图如图 2-5 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image010.jpg" alt="图 2-5 个人计划用例图"></p>
<ol start="2">
<li><strong>工作日报</strong></li>
</ol>
<p>工作日报告是为实现个人目标管理而制作的应用文件，它记录了当天的工作细节、所做的工作以及工作过程中遇到的问题、解决问题的思路和分析工作的方法。与个人计划类似，日常工作允许普通员工进行添加、编辑、删除、查询等操作，员工经过长时间的积累，通过日常工作总结报告，可以不断提高工作技能。</p>
<p>工作日报的用例图如图 2-6 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image012.jpg" alt="图 2-6 工作日报用例图"></p>
<ol start="3">
<li><strong>转正申请</strong></li>
</ol>
<p>满足试习条件的员工可提交转正申请，普通员工拥有新增、删除与查询转正申请的权限，人事部员工拥有审批转正申请的权限。转正申请页面需展示转正申请日期、申请人、申请内容、审批日期、审批人、审批结果、审批意见、审批状态等信息。</p>
<p>转正申请的用例图如图 2-7 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image014.jpg" alt="图 2-7 转正申请用例图"></p>
<ol start="4">
<li><strong>培训计划</strong></li>
</ol>
<p>所谓培训计划，就是在根据组织战略对培训需求进行全面、客观分析的基础上，对培训的时间、地点、目的、主题和内容进行系统的预先安排。</p>
<p>培训计划的用例图如图 2-8 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image016.jpg" alt="图 2-8 培训计划用例图"></p>
<h4 id="2-2-5- 招聘管理"><a href="#2-2-5- 招聘管理" class="headerlink" title="2.2.5 招聘管理"></a>2.2.5 招聘管理 </h4><p> 招聘管理分为招聘需求与面试计划两个子模块。</p>
<ol>
<li><strong>招聘需求</strong></li>
</ol>
<p>招聘需求是为各个部门需要人才时到招聘需求申请，申请成功后，由人事部门和招聘部门协商面试时间添加面试计划，并跟踪面试结果。招聘需求可由人事部门或有招聘需求部门填写。</p>
<p>招聘需求的用例图如图 2-9 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image018.jpg" alt="图 2-9 招聘需求用例图"></p>
<ol start="2">
<li><strong>面试计划</strong></li>
</ol>
<p>面试计划时人事部员工看到各个部门的招聘需求后，联系候选人并和用人部门协商面试时间，并将面试计划提交，等面试结束再将面试结果同步到系统，招聘结束后结束流程。</p>
<p>面试计划的用例图如图 2-10 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image020.jpg" alt="图 2-10 面试计划用例图"></p>
<h4 id="2-2-6- 系统管理"><a href="#2-2-6- 系统管理" class="headerlink" title="2.2.6 系统管理"></a>2.2.6 系统管理 </h4><p> 系统管理模块主要是拥有管理员权限的用户对系统的配置与操作，其中主要包括已注册账号的信息编辑工作和系统使用人员的权限分配工作，具体功能如下：</p>
<ol>
<li><p>用户管理，用于创建与修改用户信息，键入用户账号、账号状态、用户姓名、用户密码、所属部门以及角色名称等基础用户信息后，即完成系统新用户的添加；还能够实现系统已有用户的查询，用户资料的修改删除等功能，通常只有人事部员工和管理员可用。</p>
</li>
<li><p>部门管理，可增加新部门或新成立子公司，通常只有管理员和高级领导可用。</p>
</li>
<li><p>角色管理，用于管理用户月色信息，添加系统角色名称和角色描述后即可为相应角色赋予对应的权限，通常只有管理员和高级领导可用。</p>
</li>
<li><p>菜单管理，管理系统左侧的菜单树，只有管理员可用。</p>
</li>
<li><p>字典管理，管理系统常用字典值，只有管理员可用。</p>
</li>
</ol>
<h3 id="2-3- 本章小结"><a href="#2-3- 本章小结" class="headerlink" title="2.3 本章小结"></a>2.3 本章小结 </h3><p> 需求分析是人事信息管理系统开发的基础，详细的需求说明为后期开发工作提供依据与参考，所开发的产品才能更加贴合用户实际使用需要。本章就人事信息管理系统进行了可行性分析并对六个模块功能需求展开了说明介绍，为下一章系统的设计实现提供了重要的保障。</p>
<h2 id="第 3 章 - 系统设计"><a href="# 第 3 章 - 系统设计" class="headerlink" title="第 3 章 系统设计"></a>第 3 章 系统设计 </h2><h3 id="3-1- 系统设计原则"><a href="#3-1- 系统设计原则" class="headerlink" title="3.1 系统设计原则"></a>3.1 系统设计原则</h3><p> 优秀的软件系统往往都具备优秀的可维护性、可复用性和可扩展性，为提升系统软件水平，遵循前人总结的 6 条系统设计原则是十分必要和合理的，这些原则可以显著提高软件开发效率、降低开发和维护成本。</p>
<p>（1）开闭原则：鼓励开放扩展，建议关闭修改，此原则意在说明用抽象构建框架，用实现扩展细节的重要性。</p>
<p>（2）依赖倒置原则：功能模块之间的依赖关系应使用抽象类或接口的方式实现，不能直接链接，目的是防止模块更改产生后产生大量不必要的工作并加大测试难度。</p>
<p>（3）单一职责原则：不要存在多于一个导致类变更的原因。这一原则提出，一个对象不应该承担太多的责任。如果一个对象承担了太多的责任，一个责任的改变可能会影响、削弱或抑制这个类实现其他责任的能力。</p>
<p>（4）接口隔离原则：细化接口是使程序设计更加灵活的有效途径，但值得注意的是过多的接口可能会导致设计异常复杂。</p>
<p>（5）迪米特原则：此原则通俗来讲就是尽可能地降低类之间的耦合，只强调与相关类的通信。相关类是指出现在成员变量、方法的输入和输出参数中的类[2]。</p>
<p>（6）里氏替换原则：此原则提出允许子类扩展父类的功能，但子类不可以更改父类的初始功能。它的目的是防止并行开发带来的问题，使代码拥有更好的可读性。</p>
<h3 id="3-2- 系统技术架构"><a href="#3-2- 系统技术架构" class="headerlink" title="3.2 系统技术架构"></a>3.2 系统技术架构 </h3><p> 在企业现有的发展基础上，放眼于长远的征途，人事管理系统的设计也要充分考虑企业的现实实际情况和未来的发展方向，成功地做出面向未来的安排，满足现有的需要。 有了面向未来的框架，日后才能有针对性目的性的扩展与完善。</p>
<p>本系统采用 B/S 架构，服务端采用 SpringBoot 框架，SpringBoot 是一个轻量级基于 Java 的请求驱动的框架。它同样是通过 MVC 架构模式来降低 Web 层职责的耦合性，同时利用 MyBatis 框架作为数据持久层，MySQL 作为数据库层并单独设置数据库服务器。这样做可以使表现层、控制层、业务逻辑层、数据访问层以及数据存储层分离，使更层级职责分工明确。技术架构设计如图 3-1 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image022.jpg" alt="图 3-1 系统技术架构图"></p>
<h3 id="3-3- 系统功能架构"><a href="#3-3- 系统功能架构" class="headerlink" title="3.3 系统功能架构"></a>3.3 系统功能架构 </h3><p> 通过模块化的设计思想，将系统分为系统管理、档案管理、培训管理、工资管理、招聘管理、考勤管理六个模块，系统的功能模块架构图如图 3-2 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image024.gif" alt="图 3-2 系统功能架构图"></p>
<h3 id="3-4- 数据库设计"><a href="#3-4- 数据库设计" class="headerlink" title="3.4 数据库设计"></a>3.4 数据库设计</h3><h4 id="3-4-1- 数据库建模工具"><a href="#3-4-1- 数据库建模工具" class="headerlink" title="3.4.1 数据库建模工具"></a>3.4.1 数据库建模工具</h4><p>Power Designer 是 Sybase 公司开发的 CASE 工具集，它为分析设计管理信息系统提供了很大的便捷。通过它，数据库设计人员不用再使用 create table 等语句创建表结构，数据库语句可以自动生成，只需关注如何进行数据建模即可。</p>
<h4 id="3-4-2- 数据库表设计"><a href="#3-4-2- 数据库表设计" class="headerlink" title="3.4.2 数据库表设计"></a>3.4.2 数据库表设计 </h4><p> 不管哪一种管理系统，数据库一定是其基础，因为它的存在对于存储和更新所有数据是必要的。数据库拥有存储、维护和检索信息的能力，以便能够方便、及时和准确地访问这些信息[1]。在分析了系统的功能需求和模块的设计后设计了详细的数据库表，以避免数据过载。</p>
<p>本系统主要有 13 个表，分别为员工档案信息表、合同信息表、工资管理信息表、出勤记录信息表、个人计划信息表、工作日报信息表、转正申请信息表、培训计划信息表招聘需求信息面试计划信息表、用户管理信息表、部门管理信息表、角色管理信息表。各表设计如下：</p>
<ol>
<li><strong>员工档案信息表</strong></li>
</ol>
<p>标识为 b_user_doc，该表记录员工档案的基本信息，包括员工档案 id、员工 id、学历、生日、入职日期、员工类型、创建时间、更新时间等信息。</p>
<p>表 3-1 员工档案信息表 b_user_doc</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>id</td>
<td>bigint</td>
<td>员工档案 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>user_id</td>
<td>bigint</td>
<td>员工 id</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>education</td>
<td>varchar</td>
<td>学历</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>birth</td>
<td>varchar</td>
<td>生日</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>entry_date</td>
<td>varchar</td>
<td>入职日期</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>user_type</td>
<td>varchar</td>
<td>员工类型</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>update_time</td>
<td>datetime</td>
<td>更新时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="2">
<li><strong>合同信息表</strong></li>
</ol>
<p>标识为 b_contract，该表记录合同管理的基本信息，包括合同 id、合同甲方、合同乙方、合同名称、合同签订日期、甲方负责人、乙方负责人、合同金额、创建时间、修改时间等信息。</p>
<p>表 3-2 合同信息表 b_contract</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>id</td>
<td>bigint</td>
<td>合同 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>name</td>
<td>varchar</td>
<td>合同名称</td>
<td>128</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>part_a</td>
<td>varchar</td>
<td>合同甲方</td>
<td>128</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>part_b</td>
<td>varchar</td>
<td>合同乙方</td>
<td>128</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>sign_date</td>
<td>varchar</td>
<td>合同签订日期</td>
<td>12</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>person_a</td>
<td>varchar</td>
<td>甲方负责人</td>
<td>64</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>person_b</td>
<td>varchar</td>
<td>乙方负责人</td>
<td>64</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>合同金额</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>update_time</td>
<td>datetime</td>
<td>修改时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="3">
<li><strong>工资管理信息表</strong></li>
</ol>
<p>标识为 b_salary_record，该表记录转正申请的基本信息，包括工资管理信息 id、用户 id、工资月份、应发工资、实发工资、公积金扣款、个税扣款、医保扣款、养老扣款、工伤扣款、生育扣款、失业扣款、请假扣款、迟到扣款、基本工资、工龄工资、加班费、绩效奖金、创建时间、更新时间等信息。</p>
<p>表 3-3 工资管理信息表 b_salary_record</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>id</td>
<td>bigint</td>
<td>工资管理信息 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>user_id</td>
<td>bigint</td>
<td>用户 id</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>salary_month</td>
<td>varchar</td>
<td>工资月份</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>must_salary</td>
<td>float</td>
<td>应发工资</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>reslity_salary</td>
<td>float</td>
<td>实发工资</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>fund_amount</td>
<td>float</td>
<td>公积金扣款</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>tax_amount</td>
<td>float</td>
<td>个税扣款</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>medical_amount</td>
<td>float</td>
<td>医保扣款</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>pension_amount</td>
<td>float</td>
<td>养老扣款</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>injured_amount</td>
<td>float</td>
<td>工伤扣款</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>birth_amount</td>
<td>float</td>
<td>生育扣款</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>unemployment_amount</td>
<td>float</td>
<td>失业扣款</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>leave_amount</td>
<td>float</td>
<td>请假扣款</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>late_amount</td>
<td>float</td>
<td>迟到扣款</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>base_amount</td>
<td>float</td>
<td>基本工资</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>work_amount</td>
<td>float</td>
<td>工龄工资</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>overtime_amount</td>
<td>float</td>
<td>加班费</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>merits_amount</td>
<td>float</td>
<td>绩效奖金</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>update_time</td>
<td>datetime</td>
<td>更新时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="4">
<li><strong>出勤记录信息表</strong></li>
</ol>
<p>标识为 b_work_record，该表记录出勤记录的基本信息，包括出勤记录 id、员工 id、工作日期、上班时间、下班时间、状态、创建时间、更新时间等信息。</p>
<p>表 3-4 出勤记录信息表 b_work_record</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>id</td>
<td>bigint</td>
<td>出勤记录 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>user_id</td>
<td>bigint</td>
<td>员工 id</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>work_date</td>
<td>varchar</td>
<td>工作日期</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>up_time</td>
<td>varchar</td>
<td>上班时间</td>
<td>8</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>down_time</td>
<td>varchar</td>
<td>下班时间</td>
<td>8</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>status</td>
<td>int</td>
<td>状态</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>update_time</td>
<td>datetime</td>
<td>更新时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>work_month</td>
<td>varchar</td>
<td>工作月份</td>
<td>8</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="5">
<li><strong>个人计划信息表</strong></li>
</ol>
<p>标识为 b_user_plan，该表记录转正申请的基本信息，包括个人计划 id、员工、计划名称、开始日期、结束日期、计划状态、创建时间、修改时间等信息。</p>
<p>表 3-5 个人计划信息表 b_user_plan</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>id</td>
<td>bigint</td>
<td>个人计划 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>user_id</td>
<td>bigint</td>
<td>员工</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>name</td>
<td>varchar</td>
<td>计划名称</td>
<td>64</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>start_date</td>
<td>varchar</td>
<td>开始日期</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>end_date</td>
<td>varchar</td>
<td>结束日期</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>status</td>
<td>int</td>
<td>计划状态</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>update_time</td>
<td>datetime</td>
<td>修改时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>content</td>
<td>varchar</td>
<td>内容</td>
<td>1024</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="6">
<li><strong>工作日报信息表</strong></li>
</ol>
<p>标识为 b_work_daily，该表记录工作日报的基本信息，包括工作日报 id、员工 id、工作月份、工作日期、工作内容、完成进度、创建时间、更新时间等信息。</p>
<p>表 3-6 工作日报信息表 b_work_daily</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>id</td>
<td>bigint</td>
<td>工作日报 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>user_id</td>
<td>bigint</td>
<td>员工 id</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>work_month</td>
<td>varchar</td>
<td>工作月份</td>
<td>8</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>work_date</td>
<td>varchar</td>
<td>工作日期</td>
<td>24</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>work_content</td>
<td>varchar</td>
<td>工作内容</td>
<td>1024</td>
<td>否</td>
<td>否</td>
</tr>
<tr>
<td>process</td>
<td>int</td>
<td>完成进度</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>update_time</td>
<td>datetime</td>
<td>更新时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="7">
<li><strong>转正申请信息表</strong></li>
</ol>
<p>标识为 b_convert_apply，该表记录转正申请的基本信息，包括转正申请 id、申请日期、申请人、申请内容、状态、审批日期、审批人、审批结果、审批意见、创建时间等信息。</p>
<p>表 3-7 转正申请信息表 b_convert_apply</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>id</td>
<td>bigint</td>
<td>转正申请 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>apply_user_id</td>
<td>bigint</td>
<td>申请人</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>apply_date</td>
<td>varchar</td>
<td>申请日期</td>
<td>24</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>apply_content</td>
<td>varchar</td>
<td>申请内容</td>
<td>128</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>status</td>
<td>int</td>
<td>状态</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>approval_date</td>
<td>varchar</td>
<td>审批日期</td>
<td>24</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>approval_user_id</td>
<td>varchar</td>
<td>审批人</td>
<td>24</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>approval_result</td>
<td>int</td>
<td>审批结果</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>approval_opinion</td>
<td>varchar</td>
<td>审批意见</td>
<td>64</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="8">
<li><strong>培训计划信息表</strong></li>
</ol>
<p>标识为 b_train_plan，该表记录培训计划的基本信息，包括培训计划 id、日期、主题、参加人员、内容、创建时间、更新时间等信息。</p>
<p>表 3-8 培训计划信息表 b_train_plan</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>id</td>
<td>bigint</td>
<td>培训计划 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>title</td>
<td>varchar</td>
<td>主题</td>
<td>64</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>train_date</td>
<td>varchar</td>
<td>日期</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>content</td>
<td>varchar</td>
<td>内容</td>
<td>128</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>participant</td>
<td>varchar</td>
<td>参加人员</td>
<td>64</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>update_time</td>
<td>datetime</td>
<td>更新时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="9">
<li><strong>招聘需求信息表</strong></li>
</ol>
<p>标识为 b_recruit_need，该表记录转正申请的基本信息，包括招聘需求 id、需求人数、需求部门、岗位类型、学历要求、工作年限要求、招聘要求、需求状态、招聘负责人、需求负责人等信息。</p>
<p>表 3-9 招聘需求信息表 b_recruit_need</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>id</td>
<td>bigint</td>
<td>招聘需求 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>dept</td>
<td>varchar</td>
<td>需求部门</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>need_num</td>
<td>int</td>
<td>需求人数</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>post</td>
<td>varchar</td>
<td>岗位类型</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>education</td>
<td>varchar</td>
<td>学历要求</td>
<td>16</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>work_time</td>
<td>int</td>
<td>工作年限要求</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>demand</td>
<td>varchar</td>
<td>招聘要求</td>
<td>128</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>status</td>
<td>int</td>
<td>需求状态</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>recruit_user_id</td>
<td>bigint</td>
<td>招聘负责人</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>need_user_id</td>
<td>bigint</td>
<td>需求负责人</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="10">
<li><strong>面试计划信息表</strong></li>
</ol>
<p>标识为 b_interview_plan，该表记录面试计划的基本信息，包括面试计划 id、候选人电话、候选人姓名、面试时间、面试官、面试结果、创建时间、更新时间等信息。</p>
<p>表 3-10 面试计划信息表 b_interview_plan</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>id</td>
<td>bigint</td>
<td>面试计划 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>candidate</td>
<td>varchar</td>
<td>候选人姓名</td>
<td>64</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>candidate_mobile</td>
<td>varchar</td>
<td>候选人电话</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>meet_time</td>
<td>varchar</td>
<td>面试时间</td>
<td>24</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>meet_user_id</td>
<td>bigint</td>
<td>面试官</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>status</td>
<td>int</td>
<td>面试结果</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>update_time</td>
<td>datetime</td>
<td>更新时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="11">
<li><strong>用户管理信息表</strong></li>
</ol>
<p>标识为 sys_user，该表记录用户管理的基本信息，包括用户 id、用户名、密码、邮箱、手机号、状态、部门 id、创建时间等信息。</p>
<p>表 3-11 用户管理信息表 sys_user</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>user_id</td>
<td>bigint</td>
<td>用户 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>username</td>
<td>varchar</td>
<td>用户名</td>
<td>50</td>
<td>否</td>
<td>否</td>
</tr>
<tr>
<td>password</td>
<td>varchar</td>
<td>密码</td>
<td>100</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>email</td>
<td>varchar</td>
<td>邮箱</td>
<td>100</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>mobile</td>
<td>varchar</td>
<td>手机号</td>
<td>100</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>status</td>
<td>tinyint</td>
<td>状态</td>
<td>4</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>dept_id</td>
<td>bigint</td>
<td>部门 id</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="12">
<li><strong>部门管理信息表</strong></li>
</ol>
<p>标识为 sys_dept，该表记录部门管理的基本信息，包括部门 id、部门名称、上级部门 id、排序、是否删除等信息。</p>
<p>表 3-12 部门管理信息表 sys_dept</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>dept_id</td>
<td>bigint</td>
<td>部门 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>parent_id</td>
<td>bigint</td>
<td>上级部门 id</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>name</td>
<td>varchar</td>
<td>部门名称</td>
<td>50</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>oeder_num</td>
<td>int</td>
<td>排序</td>
<td>11</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>del_flag</td>
<td>tinyint</td>
<td>是否删除</td>
<td>4</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<ol start="13">
<li><strong>角色管理信息表</strong></li>
</ol>
<p>标识为 sys_role，该表记录角色管理的基本信息，包括角色 id、角色名称、备注、部门 id、创建时间等信息。</p>
<p>表 3-13 角色管理信息表 sys_role</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th>类型</th>
<th>中文名称</th>
<th>长度</th>
<th>允许空</th>
<th>主键</th>
</tr>
</thead>
<tbody><tr>
<td>role_id</td>
<td>bigint</td>
<td>角色 id</td>
<td>20</td>
<td>否</td>
<td>是</td>
</tr>
<tr>
<td>role_name</td>
<td>varchar</td>
<td>角色名称</td>
<td>100</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>remark</td>
<td>varchar</td>
<td>备注</td>
<td>100</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>dept_id</td>
<td>bigint</td>
<td>部门 id</td>
<td>20</td>
<td>是</td>
<td>否</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>创建时间</td>
<td>0</td>
<td>是</td>
<td>否</td>
</tr>
</tbody></table>
<h3 id="3-5- 本章小结"><a href="#3-5- 本章小结" class="headerlink" title="3.5 本章小结"></a>3.5 本章小结 </h3><p> 描述完整的需求分析之后，这一章的重点是详细的系统设计过程，为人事管理系统建立一个良好的分层结构。在这里，功能模块被逐一列出，主要的数据库表结构也相应设计。在下一章中，将介绍人事信息管理系统的实现效果。</p>
<h2 id="第 4 章 - 系统实现"><a href="# 第 4 章 - 系统实现" class="headerlink" title="第 4 章 系统实现"></a>第 4 章 系统实现 </h2><h3 id="4-1- 系统开发运行环境"><a href="#4-1- 系统开发运行环境" class="headerlink" title="4.1 系统开发运行环境"></a>4.1 系统开发运行环境</h3><p> 本系统的开发是基于 J2EE 平台的 WEB 应用开发，具体开发环境如下：</p>
<ol>
<li><p>操作系统：Windows10 </p>
</li>
<li><p>数据库：MySQL:5.7 </p>
</li>
<li><p>JAVA 编译器：JDK1.8</p>
</li>
<li><p>开发包：SpringBoot 2.1.8.RELEASE，MyBatisPlus 3.1.2 </p>
</li>
<li><p>开发工具：InetlliJ IDEA 2020 </p>
</li>
<li><p>WEB 服务器：台式电脑</p>
</li>
</ol>
<h3 id="4-2- 系统开发技术介绍"><a href="#4-2- 系统开发技术介绍" class="headerlink" title="4.2 系统开发技术介绍"></a>4.2 系统开发技术介绍 </h3><p> 企业人事管理系统的开发设计到一系列理念、技术以及工具的应用，本节详细介绍本系统开发过程中设计到的技术和工具。</p>
<h4 id="4-2-1-B-S 开发模式"><a href="#4-2-1-B-S 开发模式" class="headerlink" title="4.2.1 B/S 开发模式"></a>4.2.1 B/S 开发模式 </h4><p> 目前软件开发有两种类型的软件开发模式，即被称为 C/S 开发模式的客户端 / 服务器模式和被称为 B/S 开发模式的浏览器 / 服务器模式。</p>
<p>在作为开发模式的 C/S 架构中，用户必须在终端计算机上安装一个专门的客户端才能与服务器取得连接并互相传递信息。 在信息系统发展的起步阶段，C/S 模式被广泛认可并得到快速普及与发展。 然而，随着互联网时代的到来，人们逐渐发现 C/S 架构的种种弊端，B/S 架构的长处愈发明显，因此现在 B/S 架构也成为软件开发模式的重要组成部分。</p>
<p>B/S 开发模式两个优点是其能够撼动 C/S 模式统治地位重要原因:</p>
<ol>
<li><p>限制较少。在 C/S 开发模式中，用户需要在终端上安装必要的客户端软件来与服务器通信，如果用户临时使用另一台电脑，那就必须重新安装相应的软件，这在实际使用场景中很麻烦。 而 B/S 模式则不同，只要有浏览器，随时随地都可以访问。 在当下互联网普及的信息时代背景下，几乎每个操作系统，甚至每个设备，都有一个网络浏览器来访问互联网，这完美地解决了 C/S 模式对于终端机的限制。</p>
</li>
<li><p>易于维护。在 C/S 模式下，用户常常会遇到由于版本不同而引发的种种问题与障碍。 某一特定的客户端软件版本可能会出现的异常情况，在其他客户端上却一切稳定运行。 在这种情况下，维护特定的客户端版本变得十分繁琐与麻烦；然而，在 B/S 模式中，多个客户端版本根本不会影响系统的运行工作，因为所有程序都在后台服务器上运行。 并且，基于这种模式开发软件所需要的成本也比较低，因为如果出现异常情况，运维人员只需对后台程序进行查验，并以统一方式进行修复即可。</p>
</li>
</ol>
<p>因此本系统结合实际需求，采用 B/S 结构的开发模式。</p>
<h4 id="4-2-2-MVC 设计模式"><a href="#4-2-2-MVC 设计模式" class="headerlink" title="4.2.2 MVC 设计模式"></a>4.2.2 MVC 设计模式</h4><p>MVC 是三个英文单词的首字母缩写，它们分别指 Model（模型）、 View（视图）、以及 Controller（控制器）。MVC 的主体思路就是采用分治思想，将传统实现过程中的三个部分拆分开，使三层紧密联系却又不相互影响，从而减少开发过程中的杂乱无章，也便于后期系统的维护。下面是这三部门的具体描述介绍:</p>
<p>视图，简单来讲就是用户最直观所见的界面。通常在开发 JavaEE 过程中，开发人员会采用 JSP 技术实现视图界面。JSP 就是 Java 服务器页面，其最大的特点即页面本身代码部分可以嵌入在 Java 代码中，从而完成一些数据处理的操作。但在 MVC 的设计模式下，这种方式是不被建议的，视图不会负责数据处理的任务，它只有两个职能：展示数据，充当使用者和后台程序之间的桥梁。</p>
<p>控制器，顾名思义就像整个程序的指挥官，控制程序运行。它主要负责接收来自前端发出的用户请求，接到请求后，控制器会通过分析参数完成解析，然后凭借这些请求的内容，调用相应的模型来处理。不难发现，控制器并不负责具体方法色实现，它只是作为管理者完成 接收 - 解析 - 调度 的任务。</p>
<p>模型，用于具体业务逻辑的实现。在 Java 语言开发的 Web 项目中，模型具体指的就是功能实现类。</p>
<p>MVC 是一个框架，更是一种编程思想，它可以在没有特定条件的情况下实现。目前，已经出现了许多框架来促进 MVC 的实现。编程时使用框架会变得更简单，但缺点是会降低系统的平滑度。</p>
<h4 id="4-2-3-SpringBoot 框架"><a href="#4-2-3-SpringBoot 框架" class="headerlink" title="4.2.3 SpringBoot 框架"></a>4.2.3 SpringBoot 框架</h4><p>SpringBoot 是由 Pivotal 公司团队提供维护的开源的微框架。它为 Java 开发人员提供了一个平台，可以开始使用可自动配置的生产级 Spring 应用程序。有了它，开发人员可以快速入门，而不会浪费时间准备和配置自己的 Spring 应用程序。</p>
<p>其实，SpringBoot 并不是一个真正的全新框架，它不是为了替代 Spring 而专门开发，而是基于 Spring 框架构建，具有许多可以插入到 Spring 应用程序中的依赖项。因此，基于这点，Spring 能做到的，使用 SpringBoot 完全也能做到。</p>
<p>SpringBoot 的显著优点突出在以下几点：</p>
<ol>
<li><p>自动配置：开发人员可以自动配置其 Spring 应用程序。但是，Spring Boot 也能够根据列出的依赖项来更改配置。</p>
</li>
<li><p>独立：无需将应用程序部署到 Web 服务器，只需输入 run 命令即可启动应用程序。</p>
</li>
<li><p>自主：Spring Boot 会为开发人员确定用于配置的默认值。此外，它还会决定为所需的依赖项安装哪些软件包。</p>
</li>
</ol>
<h4 id="4-2-4-Shiro 安全框架"><a href="#4-2-4-Shiro 安全框架" class="headerlink" title="4.2.4 Shiro 安全框架"></a>4.2.4 Shiro 安全框架</h4><p>Apache Shiro 是一个功能丰富的综合安全框架。主要应用程序是身份验证、授权、加密和会话管理。这四个特性被 Shiro 框架的开发团队称为应用安全的四个基石:</p>
<p>（1）身份验证： 用户标识，通常称为用户 “登录”。</p>
<p>（2）授权： 访问控制。例如，用户是否具有使用某个操作的权限。</p>
<p>（3）会话管理： 用户特定的会话管理，即使在非 web 或 EJB 应用程序中也是如此。</p>
<p>（4）加密： 在使用加密算法对数据源进行加密的同时，保证易于使用。</p>
<p>Shiro 有一个简单易懂的 API。Shiro 可以快速简单地应用于任何应用程序，无论是从最小的移动应用程序到最大的企业 web 应用程序。</p>
<h3 id="4-3- 系统运行结果"><a href="#4-3- 系统运行结果" class="headerlink" title="4.3 系统运行结果"></a>4.3 系统运行结果 </h3><p> 本系统应用界面主要包括功能展示区、状态栏和菜单栏。功能展示区为用户对各个功能页面的操作区域；状态栏显示当前登录人昵称、修改密码、注销按钮等；菜单栏根据各功能模块划分一二级菜单。下面是部门界面的详细说明介绍。</p>
<h4 id="4-3-1- 登录界面"><a href="#4-3-1- 登录界面" class="headerlink" title="4.3.1 登录界面"></a>4.3.1 登录界面 </h4><p> 用户在标准网络浏览器的地址栏中输入系统的 URL，然后点击 “Go “进入登录界面。如图 4-1 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image026.jpg" alt="图 4-1 系统登录界面"></p>
<h4 id="4-3-2- 系统主界面"><a href="#4-3-2- 系统主界面" class="headerlink" title="4.3.2 系统主界面"></a>4.3.2 系统主界面 </h4><p> 在系统的登录页面，准确填写账号和密码信息，按 “登录 “按钮，确认用户和密码都正确，经系统验证后进入系统主界面，如图 4-2 所示。</p>
<p><img data-src="/archives/e6cd828/clip_image028.jpg" alt="图 4-2 系统登录界面"></p>
<h4 id="4-3-3- 登录界面"><a href="#4-3-3- 登录界面" class="headerlink" title="4.3.3 登录界面"></a>4.3.3 登录界面 </h4><p> 员工档案管理界面包括员工档案列表与上方操作按钮。操作列表展示员工工号、员工姓名、员工手机、所属部门、学历、年龄、入职日期、员工类型、创建时间。仅管理员与人事部员工拥有查看部门员工数据权限。点击新增按钮跳转至新增员工档案页面；勾选列表左侧复选框可修改与删除员工档案，每次仅能修改一条信息。检索框可根据部门查询员工档案。</p>
<p><img data-src="/archives/e6cd828/clip_image030.jpg" alt="图 4-3 员工档案界面"></p>
<h4 id="4-3-4- 合同管理界面"><a href="#4-3-4- 合同管理界面" class="headerlink" title="4.3.4 合同管理界面"></a>4.3.4 合同管理界面 </h4><p> 合同管理界面包含合同信息的列表展示与页面上方的各类按钮。合同列表展示合同名称、合同甲方、合同乙方、合同金额、签订时间等信息。点击上方新增按钮跳转至新增合同页面，勾选合同列表左侧复选框可修改与删除合同信息。每次仅支持修改一条合同信息。检索框可根据合同名称查询。</p>
<p><img data-src="/archives/e6cd828/clip_image032.jpg" alt="图 4-4 合同管理界面"></p>
<h4 id="4-3-5- 工资管理界面"><a href="#4-3-5- 工资管理界面" class="headerlink" title="4.3.5 工资管理界面"></a>4.3.5 工资管理界面 </h4><p> 工资管理界面包括工资信息列表与上方操纵按钮。工资列表展示员工姓名、所属部门、工资月份、基本工资、全勤工资、迟到扣款、请假扣款、绩效奖金、个税扣款、五险一金、创建时间等信息。点击新增按钮跳转至新增员工工资信息页面，勾选工资列表左侧复选框可修改与删除员工工资信息。每次仅支持修改一条工资信息。检索框可根据所属部门与工资月份查询。</p>
<p><img data-src="/archives/e6cd828/clip_image034.jpg" alt="图 4-5 工资管理界面"></p>
<h4 id="4-3-6- 考勤管理界面"><a href="#4-3-6- 考勤管理界面" class="headerlink" title="4.3.6 考勤管理界面"></a>4.3.6 考勤管理界面 </h4><p> 考勤管理界面包括考勤信息列表与上方操作按钮。考勤信息列表展示员工姓名、工作日期、上班时间、下班时间、状态、创建时间等信息。点击上班打卡跳转至上班打卡页面；点击下班打卡跳转至下班打卡页面，勾选考勤信息列表左侧复选框可删除打卡信息。仅管理员与人事部员工可删除考勤信息。检索框可根据工作日期与考勤状态查询。</p>
<p><img data-src="/archives/e6cd828/clip_image036.jpg" alt="图 4-6 考勤管理界面"></p>
<h4 id="4-3-7- 个人计划界面"><a href="#4-3-7- 个人计划界面" class="headerlink" title="4.3.7 个人计划界面"></a>4.3.7 个人计划界面 </h4><p> 个人计划界面包括个人计划信息列表与上方操作按钮。个人计划列表展示员工姓名、计划主题、计划内容、开始日期、结束日期、状态、创建时间等信息。点击新增按钮跳转至新增个人计划页面，勾选列表左侧复选框可进行修改与删除，每次仅限修改一条信息。检索框可根据计划主题查询。</p>
<p><img data-src="/archives/e6cd828/clip_image038.jpg" alt="图 4-7 个人计划界面"></p>
<h4 id="4-3-8- 用户管理界面"><a href="#4-3-8- 用户管理界面" class="headerlink" title="4.3.8 用户管理界面"></a>4.3.8 用户管理界面 </h4><p> 用户管理界面包括用户信息列表与上方操作按钮。用户信息列表展示登录账号、姓名、所属部门、状态、创建时间等信息。点击新增按钮跳转至新增用户页面，勾选用户列表左侧复选框可修改与删除用户信息。每次仅允许修改一条信息。检索框可根据用户名查询。</p>
<p><img data-src="/archives/e6cd828/clip_image040.jpg" alt="图 4-8 用户管理界面"></p>
<h4 id="4-3-9- 部门管理界面"><a href="#4-3-9- 部门管理界面" class="headerlink" title="4.3.9 部门管理界面"></a>4.3.9 部门管理界面 </h4><p> 部门管理界面包括部门树列表与上方操作按钮。列表展示各级部门的部门 id、部门名称、上级部门、排序号等信息。点击部门名称前的父节点可展开部门下级子节点，勾选列表左侧单选框可进行部门信息的修改与删除。点击新增按钮跳转至部门新增页面。</p>
<p><img data-src="/archives/e6cd828/clip_image042.jpg" alt="图 4-9 用户管理界面"></p>
<h4 id="4-3-10- 角色管理界面"><a href="#4-3-10- 角色管理界面" class="headerlink" title="4.3.10 角色管理界面"></a>4.3.10 角色管理界面 </h4><p> 角色管理界面包括角色信息列表与上方操作按钮。角色信息列表展示角色 id、角色名称、所属部门、备注、创建时间等信息。点击新增按钮跳转至角色新增页面，勾选列表左侧复选框可进行修改与删除操作，每次仅能修改一条角色信息。检索框可根据角色名称查询。</p>
<p><img data-src="/archives/e6cd828/clip_image044.jpg" alt="图 4-10 角色管理界面"></p>
<h4 id="4-3-11- 菜单管理界面"><a href="#4-3-11- 菜单管理界面" class="headerlink" title="4.3.11 菜单管理界面"></a>4.3.11 菜单管理界面 </h4><p> 菜单管理界面包括菜单树列表与上方操作按钮。列表展示菜单 id、菜单名称、上级菜单、图标、类型、排序号、菜单 URL、授权标识等信息。点击菜单名称前的父节点可展开菜单下级子节点，勾选列表左侧单选框可进行菜单信息的修改与删除。点击新增按钮跳转至菜单新增页面。</p>
<p><img data-src="/archives/e6cd828/clip_image046.jpg" alt="图 4-11 菜单管理界面"></p>
<h3 id="4-4- 本章小结"><a href="#4-4- 本章小结" class="headerlink" title="4.4 本章小结"></a>4.4 本章小结 </h3><p> 在前几章的基础上，本章进一步介绍了系统开发环境的特点，并通过其功能界面和文字表述介绍了一个生动的企业人事信息管理系统。 在下一章中，我们将介绍系统测试的情况。</p>
<h2 id="第 5 章 - 系统测试"><a href="# 第 5 章 - 系统测试" class="headerlink" title="第 5 章 系统测试"></a>第 5 章 系统测试 </h2><h3 id="5-1- 测试意义"><a href="#5-1- 测试意义" class="headerlink" title="5.1 测试意义"></a>5.1 测试意义</h3><p> 系统测试是在软件部署前最容易忽略也是最为重要的一步。 系统测试的主要目的是快速发现缺陷，分析缺陷的原因，并根据软件运行过程中出现的问题找到解决方案，在有限的测试期内，验证软件是否可以正常稳定地投入使用[2]。</p>
<h3 id="5-2- 功能测试"><a href="#5-2- 功能测试" class="headerlink" title="5.2 功能测试"></a>5.2 功能测试 </h3><h4 id="5-2-1- 档案管理模块测试"><a href="#5-2-1- 档案管理模块测试" class="headerlink" title="5.2.1 档案管理模块测试"></a>5.2.1 档案管理模块测试</h4><p> 本模块分为员工档案与合同管理两个子模块。测试用例如表 5-1 所示。</p>
<p>表 5-1 档案管理模块测试用例</p>
<table>
<thead>
<tr>
<th><strong>序号</strong></th>
<th>测试功能</th>
<th>操作</th>
<th>预期结果</th>
<th>测试结果</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>合同管理</td>
<td>添加合同“张三劳动合同”</td>
<td>添加成功</td>
<td>正常</td>
</tr>
<tr>
<td>2</td>
<td>合同管理</td>
<td>修改“销售合同与采购合同”</td>
<td>只能选择一条记录</td>
<td>正常</td>
</tr>
<tr>
<td>3</td>
<td>合同管理</td>
<td>删除“销售合同”</td>
<td>删除成功</td>
<td>正常</td>
</tr>
<tr>
<td>4</td>
<td>员工档案</td>
<td>添加“李四”档案信息</td>
<td>添加成功</td>
<td>正常</td>
</tr>
<tr>
<td>5</td>
<td>员工档案</td>
<td>添加“管理员”档案信息</td>
<td>该员工已有档案，请勿重复添加</td>
<td>正常</td>
</tr>
<tr>
<td>6</td>
<td>员工档案</td>
<td>修改“张三”手机号为 123456</td>
<td>未知异常，请联系管理员</td>
<td>正常</td>
</tr>
<tr>
<td>7</td>
<td>员工档案</td>
<td>检索“人事部”人员档案</td>
<td>展示人事部员工档案信息</td>
<td>正常</td>
</tr>
</tbody></table>
<h4 id="5-2-2- 工资管理模块测试"><a href="#5-2-2- 工资管理模块测试" class="headerlink" title="5.2.2 工资管理模块测试"></a>5.2.2 工资管理模块测试 </h4><p> 工资管理模块测试用例如表 5-2 所示。</p>
<p>表 5-2 工资管理模块测试用例</p>
<table>
<thead>
<tr>
<th><strong>序号</strong></th>
<th>测试功能</th>
<th>操作</th>
<th>预期结果</th>
<th>测试结果</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>工资管理</td>
<td>新增赵四六月基本工资 5000</td>
<td>添加成功</td>
<td>正常</td>
</tr>
<tr>
<td>2</td>
<td>工资管理</td>
<td>修改王五六月工资迟到扣款为 200</td>
<td>修改成功</td>
<td>正常</td>
</tr>
<tr>
<td>3</td>
<td>工资管理</td>
<td>查询人事部员工六月份工资</td>
<td>查询成功</td>
<td>正常</td>
</tr>
<tr>
<td>4</td>
<td>工资管理</td>
<td>删除张三五月工资信息</td>
<td>删除成功成功</td>
<td>正常</td>
</tr>
</tbody></table>
<h4 id="5-2-3- 考勤管理模块测试"><a href="#5-2-3- 考勤管理模块测试" class="headerlink" title="5.2.3 考勤管理模块测试"></a>5.2.3 考勤管理模块测试 </h4><p> 考勤管理模块测试用例如表 5-3 所示。</p>
<p>表 5-3 考勤管理模块测试用例</p>
<table>
<thead>
<tr>
<th><strong>序号</strong></th>
<th>测试功能</th>
<th>操作</th>
<th>预期结果</th>
<th>测试结果</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>考勤管理</td>
<td>登录王大锤账号上班打卡 8：30</td>
<td>上班打卡成功，状态为正常</td>
<td>正常</td>
</tr>
<tr>
<td>2</td>
<td>考勤管理</td>
<td>登录王大锤账号下班打卡 15：30</td>
<td>下班打卡成功，状态为早退</td>
<td>正常</td>
</tr>
<tr>
<td>3</td>
<td>考勤管理</td>
<td>删除王大锤 5 月 15 日考勤信息</td>
<td>删除成功</td>
<td>正常</td>
</tr>
<tr>
<td>4</td>
<td>考勤管理</td>
<td>检索五月份所有迟到的考勤信息</td>
<td>检索成功</td>
<td>正常</td>
</tr>
</tbody></table>
<h4 id="5-2-4- 培训管理模块测试"><a href="#5-2-4- 培训管理模块测试" class="headerlink" title="5.2.4 培训管理模块测试"></a>5.2.4 培训管理模块测试 </h4><p> 本模块分为个人计划、工作日报、转正申请、培训计划四个子模块。测试用例如表 5-4 所示。</p>
<p>表 5-4 培训管理模块测试用例</p>
<table>
<thead>
<tr>
<th><strong>序号</strong></th>
<th>测试功能</th>
<th>操作</th>
<th>预期结果</th>
<th>测试结果</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>个人计划</td>
<td>新增个人计划“本周学习 springboot”</td>
<td>添加成功</td>
<td>正常</td>
</tr>
<tr>
<td>2</td>
<td>个人计划</td>
<td>修改“员工培训计划”状态为已完成</td>
<td>修改成功</td>
<td>正常</td>
</tr>
<tr>
<td>3</td>
<td>工作日报</td>
<td>删除王大锤 2021 年 5 月份工作日报</td>
<td>删除成功</td>
<td>正常</td>
</tr>
<tr>
<td>4</td>
<td>转正申请</td>
<td>修改人事小李审批结果为通过</td>
<td>修改成功</td>
<td>正常</td>
</tr>
<tr>
<td>5</td>
<td>培训计划</td>
<td>检索培训主题“入职培训”</td>
<td>列表展示所有入职培训计划</td>
<td>正常</td>
</tr>
</tbody></table>
<h4 id="5-2-5- 招聘管理模块测试"><a href="#5-2-5- 招聘管理模块测试" class="headerlink" title="5.2.5 招聘管理模块测试"></a>5.2.5 招聘管理模块测试 </h4><p> 本模块分为招聘需求、面试计划两个子模块。测试用例如表 5-5 所示。</p>
<p>表 5-5 招聘管理模块测试用例</p>
<table>
<thead>
<tr>
<th><strong>序号</strong></th>
<th>测试功能</th>
<th>操作</th>
<th>预期结果</th>
<th>测试结果</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>招聘需求</td>
<td>新增招聘需求“产品经理”，本科学历</td>
<td>添加成功</td>
<td>正常</td>
</tr>
<tr>
<td>2</td>
<td>招聘需求</td>
<td>修改“前端开发”招聘需求状态为完成</td>
<td>修改成功</td>
<td>正常</td>
</tr>
<tr>
<td>3</td>
<td>面试计划</td>
<td>删除张三面试计划</td>
<td>删除成功</td>
<td>正常</td>
</tr>
<tr>
<td>4</td>
<td>面试计划</td>
<td>更新李四面试结果为未通过</td>
<td>更新成功</td>
<td>正常</td>
</tr>
<tr>
<td>5</td>
<td>面试计划</td>
<td>检索王五</td>
<td>列表展示王五面试计划信息</td>
<td>正常</td>
</tr>
</tbody></table>
<h4 id="5-2-6- 系统管理模块测试"><a href="#5-2-6- 系统管理模块测试" class="headerlink" title="5.2.6 系统管理模块测试"></a>5.2.6 系统管理模块测试 </h4><p> 本模块分为用户管理、角色管理、部门管理、字典管理、菜单管理五个子模块。测试用例如表 5-6 所示。</p>
<p>表 5-6 系统管理模块测试用例</p>
<table>
<thead>
<tr>
<th><strong>序号</strong></th>
<th>测试功能</th>
<th>操作</th>
<th>预期结果</th>
<th>测试结果</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>用户管理</td>
<td>新增管理员用户“管理员 A”</td>
<td>添加成功</td>
<td>正常</td>
</tr>
<tr>
<td>2</td>
<td>用户管理</td>
<td>修改用户“王大锤”角色为总经理</td>
<td>修改成功</td>
<td>正常</td>
</tr>
<tr>
<td>3</td>
<td>部门管理</td>
<td>为北京总公司添加分公司“无锡分公司”</td>
<td>添加成功</td>
<td>正常</td>
</tr>
<tr>
<td>4</td>
<td>部门管理</td>
<td>修改管理部名称为“总经理办公室”</td>
<td>修改成功</td>
<td>正常</td>
</tr>
<tr>
<td>5</td>
<td>角色管理</td>
<td>添加新角色董事长</td>
<td>添加成功</td>
<td>正常</td>
</tr>
<tr>
<td>6</td>
<td>角色管理</td>
<td>修改普通员工数据权限为人事部</td>
<td>普通员工角色用户仅能查看人事部门数据</td>
<td>正常</td>
</tr>
<tr>
<td>7</td>
<td>菜单管理</td>
<td>修改档案管理排序号为 1，工资管理排序号为 2</td>
<td>档案管理与工资管理菜单位置互换</td>
<td>正常</td>
</tr>
<tr>
<td>8</td>
<td>字典管理</td>
<td>添加性别字典值“未知”</td>
<td>添加成功</td>
<td>正常</td>
</tr>
</tbody></table>
<h3 id="5-3- 测试结论"><a href="#5-3- 测试结论" class="headerlink" title="5.3 测试结论"></a>5.3 测试结论 </h3><p> 根据相关原则和方法，通过向档案管理、工资管理、考勤管理、培训管理、招聘管理和系统管理等模块输入各种数据，测试了系统的功能，验证了系统运行的可靠性。 测试结果表明，测试案例非常理想，系统工作正常，证明了系统具备移交用户使用的条件。</p>
<h3 id="5-4- 本章小结"><a href="#5-4- 本章小结" class="headerlink" title="5.4 本章小结"></a>5.4 本章小结 </h3><p> 在这一章中，对系统的主要功能以及系统的稳定可行性在不同的条件下进行了人工测试。 经过对测试结果的分析，得出的结论是，该系统基本符合实际业务需求和人力资源部门工作人员提出的具体要求。 在接下来的实施过程中，将根据实际使用中遇到的问题，进一步改进优化和不断完善该系统。</p>
<h2 id="第 6 章 - 总结与展望"><a href="# 第 6 章 - 总结与展望" class="headerlink" title="第 6 章 总结与展望"></a>第 6 章 总结与展望 </h2><h3 id="6-1 总结"><a href="#6-1 总结" class="headerlink" title="6.1 总结"></a>6.1 总结</h3><p> 本文按照软件开发的一般程序，充分探讨和研究当前互联网技术环境下的人力资源管理办公步骤，整理出实现企业人力资源管理系统功能的要点，联系企业人事管理部门的实际业务需求，用 J2EE 技术来建立一个更安全的企业人事管理系统，具有良好的客户体验和高稳定性。</p>
<p>该系统适用于企业的人力资源管理需求，节省了企业的大部分人力成本，大大提高了员工的工作效率。 现将结果介绍如下：</p>
<p>1、基于复杂工作简单化的原则，本文分析了人力资源管理研究的现状和重要性，并确定了开发企业人事信息管理系统的目的。</p>
<p>2、全面研究人事信息管理体系建设所涉及的主流技术和专业知识。</p>
<p>3、对系统的功能需求进行全方面调研考察，并对实施可行性进行分析，设计并创建相关数据库结构。</p>
<p>4、建立开发系统的环境，并实施测试过程，在不断完善系统的同时，使系统更加稳定可靠地呈现给用户。</p>
<h3 id="6-2 展望"><a href="#6-2 展望" class="headerlink" title="6.2 展望"></a>6.2 展望 </h3><p> 虽然这个系统已经实现了很多核心功能，可以满足企业的基本管理需求，系统地解决企业人力资源管理的问题。 然而，系统仍有扩展和优化的空间，因为这个系统的开发需要大量的努力，而个人的能力和时间都是有限的。 此外，在这个系统开发的早期阶段，由于缺乏相关的知识，难以避免地走了一些弯路。以上种种原因，都可能导致本系统存在一些缺陷与瑕疵。</p>
<p>因此，本系统功能上值得进一步的改进，增加更多模块，以实现对系统更全面和准确的管理。 此外，系统的代码结构也值得优化完善，以明确结构和层次，这将使系统随后更容易管理，这些都是本系统值得探索的发展方向。</p>
<p>参考文献</p>
<p>[1] 李灿灿. 企业内部管理系统的设计与实现[D]. 山东大学, 2020.</p>
<p>[2] 张晓天. 基于 SSH 框架的企业信息管理系统的设计与实现[D]. 大连海事大学, 2019.</p>
<p>[3] 刘晨. 企业人事管理系统的设计与实现[D]. 吉林大学, 2017.</p>
<p>[4] 王惠. 基于 JSP 的企业人事管理系统的设计与实现[J]. 电脑知识与技术, 2018, 14(33): 75-77.</p>
<p>[5] 吴亮. 中小企业人事管理系统设计[J]. 科学技术创新, 2020(31): 73-74.</p>
<p>[6] 刘平. 中小企业人事信息管理系统的设计与实现[D]. 厦门大学, 2017.</p>
<p>[7] 单晓欧. 企业人事管理系统的设计与实现[D]. 吉林大学, 2016.</p>
<p>[8] 李志军. 基于 B_S 企业人事管理信息系统的设计与实现[D]. 华北电力大学, 2017.</p>
<p>[9] 王剑南. Java 面向对象 B/S 后台开发精粹[M]. 北京: 清华大学出版社, 2010, 8(5）: 11-13.</p>
<p>[10] 郑良博. 基于 B/S 架构的中小企业人事管理系统设计与实现[D]. 电子科技大学, 2014.</p>
<p>[11] 应桂芬. 关于企业人事管理系统的设计和实现研究[J]. 电脑知识与技术, 2016, (23): 70-72.</p>
<p>[12] 李云仙. 中小型企业人事管理系统的设计与实现[D]. 大连海事大学, 2016.1-74.</p>
<p>[13]（美）萨默维尔著; 程成, 陈霞译. 软件工程: 原书第 8 版[M]. 机械工业出版社, 2007.</p>
<p>[14] 胡铮. 软件测试技术详解及应用[M]. 北京: 科学出版社, 2011, 42-43</p>
<p>[15] 张江河. 软件测试用例复用研究[D]. 西安: 西北大学, 2005, 15-23</p>
<p>[16] 尹平, 许聚常. 软件测试与软件质量评价[M]. 北京: 国防工业出版社, 2008, 96-97</p>
<p>[17] 王朔韬. 软件是这样“炼”成的一—从软件需求分析到软件架构设计[M]. 清华大学出版社. 2014.</p>
<p>[18] Shmueli O.Architectures for internal Web services deployment[M]. Roma: MorganKaufmann Publishers, 2001, 641-644.</p>
<p>[19] Jpeer.Bringing Together Semantic Weband Web Services [J].Lecture Notes in ComputerScience, 2002, 2342: 279-291.</p>
<p>[20] 黄平. 数据库技术[M]. 北京: 机械工业出版社, 2016, 6-10.</p>
<h2 id="致 - 谢"><a href="# 致 - 谢" class="headerlink" title="致 谢"></a>致 谢 </h2><p> 从四年前的金秋到今年的盛夏，大学生活悄然挥手，回顾时光的点点滴滴，既饱含收获的喜悦，又满怀青春的留恋。值此之际，首先要感谢江南大学与人工智能与计算机学院提供的良好的学习与生活环境，感谢学校与学院全体教职老师，尤其感谢马萍老师对我本次论文提供的悉心指导与教诲。感谢大学期间所有的任教老师对我专业课知识无私的传授，感谢大学期间工作在学校每个岗位的奉献者。感谢我的朋友，在困苦中给予的帮助，在喜悦中分享的欢乐；感谢我的同事，在工作中分担的压力，在生活中诚挚的慰藉；更要感谢我的家人，在整个大学期间对我的支持与鼓励……</p>
<p>江南四载，逝者如斯，韶华易逝，青春无悔。</p>

    </div>

    
    
    
      

        <div class="reward-container">
  <div>感谢各位打赏的小伙伴</div>
  <button onclick="var qr = document.getElementById('qr'); qr.style.display = (qr.style.display === 'none') ? 'block' : 'none';">
    打赏
  </button>
  <div id="qr" style="display: none;">
      
      <div style="display: inline-block;">
        <img src="/images/wechatpay.png" alt="肥肉啊肥肉你在哪 微信支付">
        <p>微信支付</p>
      </div>
      
      <div style="display: inline-block;">
        <img src="/images/alipay.png" alt="肥肉啊肥肉你在哪 支付宝">
        <p>支付宝</p>
      </div>

  </div>
</div>

        

<div>
<ul class="post-copyright">
  <li class="post-copyright-author">
    <strong>本文作者： </strong>肥肉啊肥肉你在哪
  </li>
  <li class="post-copyright-link">
    <strong>本文链接：</strong>
    <a href="http://fat_fat_where_are_you.gitee.io/archives/e6cd828.html" title="毕业论文">http://fat_fat_where_are_you.gitee.io/archives/e6cd828.html</a>
  </li>
  <li class="post-copyright-license">
    <strong>版权声明： </strong>本博客所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="external nofollow noopener noreferrer" target="_blank"><i class="fab fa-fw fa-creative-commons"></i>BY-NC-SA</a> 许可协议。转载请注明出处！
  </li>
</ul>
</div>


      <footer class="post-footer">

        
  <div class="post-widgets">
    <div class="wp_rating">
      <div id="wpac-rating"></div>
    </div>
  </div>


        
    <div class="post-nav">
      <div class="post-nav-item">
    <a href="/archives/5e9249a1.html" rel="prev" title="软件工程复习">
      <i class="fa fa-chevron-left"></i> 软件工程复习
    </a></div>
      <div class="post-nav-item"></div>
    </div>
      </footer>
    
  </article>
  
  
  



          </div>
          
    <div class="comments" id="valine-comments"></div>

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
          <div class="post-toc motion-element"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%B8%80%E7%A7%8D%E4%BC%81%E4%B8%9A%E4%BA%BA%E4%BA%8B%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F%E7%9A%84%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0"><span class="nav-text">一种企业人事管理系统的设计与实现 </span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%AE%BE%E8%AE%A1%E6%80%BB%E8%AF%B4%E6%98%8E"><span class="nav-text"> 设计总说明 </span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#GENERAL-DESIGN-DESCRIPTION"><span class="nav-text">GENERAL DESIGN DESCRIPTION</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AC%AC%201%20%E7%AB%A0%20-%20%E7%BB%AA%E8%AE%BA"><span class="nav-text">第 1 章 绪论 </span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#1-1-%20%E7%A0%94%E7%A9%B6%E8%83%8C%E6%99%AF%E4%B8%8E%E6%84%8F%E4%B9%89"><span class="nav-text">1.1 研究背景与意义</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#1-2-%20%E5%9B%BD%E5%86%85%E5%A4%96%E7%A0%94%E7%A9%B6%E7%8E%B0%E7%8A%B6"><span class="nav-text">1.2 国内外研究现状 </span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#1-3-%20%E6%9C%AC%E6%96%87%E4%B8%BB%E8%A6%81%E7%A0%94%E7%A9%B6%E5%86%85%E5%AE%B9"><span class="nav-text">1.3 本文主要研究内容 </span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#1-4-%20%E6%9C%AC%E6%96%87%E7%9A%84%E7%BB%84%E7%BB%87%E7%BB%93%E6%9E%84"><span class="nav-text">1.4 本文的组织结构 </span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AC%AC%202%20%E7%AB%A0%20-%20%E7%B3%BB%E7%BB%9F%E9%9C%80%E6%B1%82%E5%88%86%E6%9E%90"><span class="nav-text">第 2 章 系统需求分析 </span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#2-1-%20%E7%B3%BB%E7%BB%9F%E5%8F%AF%E8%A1%8C%E6%80%A7%E5%88%86%E6%9E%90"><span class="nav-text">2.1 系统可行性分析</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#2-2-%20%E5%8A%9F%E8%83%BD%E9%9C%80%E6%B1%82%E5%88%86%E6%9E%90"><span class="nav-text">2.2 功能需求分析 </span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#2-2-1-%20%E6%A1%A3%E6%A1%88%E7%AE%A1%E7%90%86"><span class="nav-text">2.2.1 档案管理 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#2-2-2-%20%E5%B7%A5%E8%B5%84%E7%AE%A1%E7%90%86"><span class="nav-text">2.2.2 工资管理 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#2-2-3-%20%E8%80%83%E5%8B%A4%E7%AE%A1%E7%90%86"><span class="nav-text">2.2.3 考勤管理 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#2-2-4-%20%E5%9F%B9%E8%AE%AD%E7%AE%A1%E7%90%86"><span class="nav-text">2.2.4 培训管理 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#2-2-5-%20%E6%8B%9B%E8%81%98%E7%AE%A1%E7%90%86"><span class="nav-text">2.2.5 招聘管理 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#2-2-6-%20%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86"><span class="nav-text">2.2.6 系统管理 </span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#2-3-%20%E6%9C%AC%E7%AB%A0%E5%B0%8F%E7%BB%93"><span class="nav-text">2.3 本章小结 </span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AC%AC%203%20%E7%AB%A0%20-%20%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1"><span class="nav-text">第 3 章 系统设计 </span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#3-1-%20%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1%E5%8E%9F%E5%88%99"><span class="nav-text">3.1 系统设计原则</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#3-2-%20%E7%B3%BB%E7%BB%9F%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84"><span class="nav-text">3.2 系统技术架构 </span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#3-3-%20%E7%B3%BB%E7%BB%9F%E5%8A%9F%E8%83%BD%E6%9E%B6%E6%9E%84"><span class="nav-text">3.3 系统功能架构 </span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#3-4-%20%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1"><span class="nav-text">3.4 数据库设计</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#3-4-1-%20%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BB%BA%E6%A8%A1%E5%B7%A5%E5%85%B7"><span class="nav-text">3.4.1 数据库建模工具</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#3-4-2-%20%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A1%A8%E8%AE%BE%E8%AE%A1"><span class="nav-text">3.4.2 数据库表设计 </span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#3-5-%20%E6%9C%AC%E7%AB%A0%E5%B0%8F%E7%BB%93"><span class="nav-text">3.5 本章小结 </span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AC%AC%204%20%E7%AB%A0%20-%20%E7%B3%BB%E7%BB%9F%E5%AE%9E%E7%8E%B0"><span class="nav-text">第 4 章 系统实现 </span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#4-1-%20%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83"><span class="nav-text">4.1 系统开发运行环境</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#4-2-%20%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%E4%BB%8B%E7%BB%8D"><span class="nav-text">4.2 系统开发技术介绍 </span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#4-2-1-B-S%20%E5%BC%80%E5%8F%91%E6%A8%A1%E5%BC%8F"><span class="nav-text">4.2.1 B&#x2F;S 开发模式 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-2-2-MVC%20%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F"><span class="nav-text">4.2.2 MVC 设计模式</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-2-3-SpringBoot%20%E6%A1%86%E6%9E%B6"><span class="nav-text">4.2.3 SpringBoot 框架</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-2-4-Shiro%20%E5%AE%89%E5%85%A8%E6%A1%86%E6%9E%B6"><span class="nav-text">4.2.4 Shiro 安全框架</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#4-3-%20%E7%B3%BB%E7%BB%9F%E8%BF%90%E8%A1%8C%E7%BB%93%E6%9E%9C"><span class="nav-text">4.3 系统运行结果 </span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-1-%20%E7%99%BB%E5%BD%95%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.1 登录界面 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-2-%20%E7%B3%BB%E7%BB%9F%E4%B8%BB%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.2 系统主界面 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-3-%20%E7%99%BB%E5%BD%95%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.3 登录界面 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-4-%20%E5%90%88%E5%90%8C%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.4 合同管理界面 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-5-%20%E5%B7%A5%E8%B5%84%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.5 工资管理界面 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-6-%20%E8%80%83%E5%8B%A4%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.6 考勤管理界面 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-7-%20%E4%B8%AA%E4%BA%BA%E8%AE%A1%E5%88%92%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.7 个人计划界面 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-8-%20%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.8 用户管理界面 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-9-%20%E9%83%A8%E9%97%A8%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.9 部门管理界面 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-10-%20%E8%A7%92%E8%89%B2%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.10 角色管理界面 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#4-3-11-%20%E8%8F%9C%E5%8D%95%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2"><span class="nav-text">4.3.11 菜单管理界面 </span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#4-4-%20%E6%9C%AC%E7%AB%A0%E5%B0%8F%E7%BB%93"><span class="nav-text">4.4 本章小结 </span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AC%AC%205%20%E7%AB%A0%20-%20%E7%B3%BB%E7%BB%9F%E6%B5%8B%E8%AF%95"><span class="nav-text">第 5 章 系统测试 </span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#5-1-%20%E6%B5%8B%E8%AF%95%E6%84%8F%E4%B9%89"><span class="nav-text">5.1 测试意义</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#5-2-%20%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95"><span class="nav-text">5.2 功能测试 </span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#5-2-1-%20%E6%A1%A3%E6%A1%88%E7%AE%A1%E7%90%86%E6%A8%A1%E5%9D%97%E6%B5%8B%E8%AF%95"><span class="nav-text">5.2.1 档案管理模块测试</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#5-2-2-%20%E5%B7%A5%E8%B5%84%E7%AE%A1%E7%90%86%E6%A8%A1%E5%9D%97%E6%B5%8B%E8%AF%95"><span class="nav-text">5.2.2 工资管理模块测试 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#5-2-3-%20%E8%80%83%E5%8B%A4%E7%AE%A1%E7%90%86%E6%A8%A1%E5%9D%97%E6%B5%8B%E8%AF%95"><span class="nav-text">5.2.3 考勤管理模块测试 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#5-2-4-%20%E5%9F%B9%E8%AE%AD%E7%AE%A1%E7%90%86%E6%A8%A1%E5%9D%97%E6%B5%8B%E8%AF%95"><span class="nav-text">5.2.4 培训管理模块测试 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#5-2-5-%20%E6%8B%9B%E8%81%98%E7%AE%A1%E7%90%86%E6%A8%A1%E5%9D%97%E6%B5%8B%E8%AF%95"><span class="nav-text">5.2.5 招聘管理模块测试 </span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#5-2-6-%20%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86%E6%A8%A1%E5%9D%97%E6%B5%8B%E8%AF%95"><span class="nav-text">5.2.6 系统管理模块测试 </span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#5-3-%20%E6%B5%8B%E8%AF%95%E7%BB%93%E8%AE%BA"><span class="nav-text">5.3 测试结论 </span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#5-4-%20%E6%9C%AC%E7%AB%A0%E5%B0%8F%E7%BB%93"><span class="nav-text">5.4 本章小结 </span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AC%AC%206%20%E7%AB%A0%20-%20%E6%80%BB%E7%BB%93%E4%B8%8E%E5%B1%95%E6%9C%9B"><span class="nav-text">第 6 章 总结与展望 </span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#6-1%20%E6%80%BB%E7%BB%93"><span class="nav-text">6.1 总结</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#6-2%20%E5%B1%95%E6%9C%9B"><span class="nav-text">6.2 展望 </span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%87%B4%20-%20%E8%B0%A2"><span class="nav-text">致 谢 </span></a></li></ol></li></ol></div>
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
    <img class="site-author-image" itemprop="image" alt="肥肉啊肥肉你在哪" src="/images/touxiang.gif">
  <p class="site-author-name" itemprop="name">肥肉啊肥肉你在哪</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">38</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
            <a href="/categories/">
          
        <span class="site-state-item-count">4</span>
        <span class="site-state-item-name">分类</span></a>
      </div>
      <div class="site-state-item site-state-tags">
            <a href="/tags/">
          
        <span class="site-state-item-count">16</span>
        <span class="site-state-item-name">标签</span></a>
      </div>
  </nav>
</div>
  <div class="links-of-author motion-element">
      <span class="links-of-author-item">
        <a href="https://github.com/feirouafeirou" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;feirouafeirou" rel="external nofollow noopener noreferrer" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
      </span>
      <span class="links-of-author-item">
        <a href="http://wpa.qq.com/msgrd?v=3&uin=1729013657&site=qq&menu=yes" title="QQ → http:&#x2F;&#x2F;wpa.qq.com&#x2F;msgrd?v&#x3D;3&amp;uin&#x3D;1729013657&amp;site&#x3D;qq&amp;menu&#x3D;yes" rel="external nofollow noopener noreferrer" target="_blank"><i class="fab fa-qq fa-fw"></i>QQ</a>
      </span>
  </div>


  <div class="links-of-blogroll motion-element">
    <div class="links-of-blogroll-title"><i class="fa fa-link fa-fw"></i>
      友情链接
    </div>
    <ul class="links-of-blogroll-list">
        <li class="links-of-blogroll-item">
          <a href="http://www.woshipm.com/" title="http:&#x2F;&#x2F;www.woshipm.com" rel="external nofollow noopener noreferrer" target="_blank">人人都是产品经理</a>
        </li>
        <li class="links-of-blogroll-item">
          <a href="http://www.chanpin100.com/" title="http:&#x2F;&#x2F;www.chanpin100.com" rel="external nofollow noopener noreferrer" target="_blank">产品壹佰</a>
        </li>
    </ul>
  </div>

      </div>

    </div>
  </aside>

  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        

<div class="copyright">
  
  &copy; 2020 – 
  <span itemprop="copyrightYear">2022</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">肥肉啊肥肉你在哪</span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-chart-area"></i>
    </span>
    <span title="站点总字数">237k</span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-coffee"></i>
    </span>
    <span title="站点阅读时长">3:35</span>
</div>

<div class="translate-style">
繁/简：<a id="translateLink" href="javascript:translatePage();">繁体
</a>
</div>
<script type="text/javascript" src="/js/tw_cn.js"></script>
<script type="text/javascript">
var defaultEncoding = 2; //网站编写字体是否繁体，1-繁体，2-简体
var translateDelay = 0; //延迟时间,若不在前, 要设定延迟翻译时间, 如100表示100ms,默认为0
var cookieDomain = "https://feirouafeirou.github.io/"; //Cookie地址, 一定要设定, 通常为你的网址
var msgToTraditionalChinese = "繁体"; //此处可以更改为你想要显示的文字
var msgToSimplifiedChinese = "简体"; //同上，但两处均不建议更改
var translateButtonId = "translateLink"; //默认互换id
translateInitilization();
</script>


        
<div class="busuanzi-count">
  <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
    <span class="post-meta-item" id="busuanzi_container_site_uv" style="display: none;">
      <span class="post-meta-item-icon">
        <i class="fa fa-user"></i>
      </span>
      <span class="site-uv" title="总访客量">
        <span id="busuanzi_value_site_uv"></span>
      </span>
    </span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item" id="busuanzi_container_site_pv" style="display: none;">
      <span class="post-meta-item-icon">
        <i class="fa fa-eye"></i>
      </span>
      <span class="site-pv" title="总访问量">
        <span id="busuanzi_value_site_pv"></span>
      </span>
    </span>
</div>








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script>
  <script src="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/lozad@1/dist/lozad.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/pisces.js"></script>


<script src="/js/next-boot.js"></script>


  <script defer src="/lib/three/three.min.js"></script>


  



  <script>
  if (CONFIG.page.isPost) {
    wpac_init = window.wpac_init || [];
    wpac_init.push({
      widget: 'Rating',
      id    : 26171,
      el    : 'wpac-rating',
      color : 'fc6423'
    });
    (function() {
      if ('WIDGETPACK_LOADED' in window) return;
      WIDGETPACK_LOADED = true;
      var mc = document.createElement('script');
      mc.type = 'text/javascript';
      mc.async = true;
      mc.src = '//embed.widgetpack.com/widget.js';
      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(mc, s.nextSibling);
    })();
  }
  </script>

  
<script src="/js/local-search.js"></script>













  

  


<script>
NexT.utils.loadComments(document.querySelector('#valine-comments'), () => {
  NexT.utils.getScript('//unpkg.com/valine/dist/Valine.min.js', () => {
    var GUEST = ['nick', 'mail'];
    var guest = 'nick,mail,link';
    guest = guest.split(',').filter(item => {
      return GUEST.includes(item);
    });
    new Valine({
      el         : '#valine-comments',
      verify     : false,
      notify     : false,
      appId      : 'puzQn5yHhkbtBj2VGFbqJ4FE-MdYXbMMI',
      appKey     : 'lmcgKM2surcxNxMRiqInHjkU',
      placeholder: "Just go go",
      avatar     : 'retro',
      meta       : guest,
      pageSize   : '10' || 10,
      visitor    : true,
      lang       : '' || 'zh-cn',
      path       : location.pathname,
      recordIP   : false,
      serverURLs : ''
    });
  }, window.Valine);
});
</script>
<div class="moon-menu">
  <div class="moon-menu-items">
    
    <div id="moon-menu-item-back2bottom" class="moon-menu-item" onclick="back2bottom()">
      <i class="fa fa-chevron-down"></i>    </div>
    
    <div id="moon-menu-item-back2top" class="moon-menu-item" onclick="back2top()">
      <i class="fa fa-chevron-up"></i>    </div>
    
  </div>
  <div class="moon-menu-button">
    <svg class="moon-menu-bg">
      <circle class="moon-menu-cricle" cx="50%" cy="50%" r="44%"/>
      <circle class="moon-menu-border" cx="50%" cy="50%" r="48%"/>
    </svg>
    <div class="moon-menu-content">
      <div class="moon-menu-icon"><i class="fas fa-ellipsis-v"></i></div>
      <div class="moon-menu-text"></div>
    </div>
  </div>
</div><script src="/js/injector.js"></script>
<!-- 数字雨 -->
<!-- <canvas id="canvas" width="1440" height="900" ></canvas> -->
<!-- <script type="text/javascript" src="/js/src/DigitalRain.js"></script> -->
<!-- 页面点击小红心 -->
<script type="text/javascript" src="/js/src/clicklove.js"></script>
<!--浏览器搞笑标题-->
<script type="text/javascript" src="/js/FunnyTitle.js"></script>
<!-- Live2D看板娘 -->
<!-- <script src="/live2d-widget/autoload.js"></script> -->
<!-- <script src="https://feirouafeirou.github.io/live2d-widget/autoload.js"></script> -->
<!-- 网页音乐播放器 -->
<!-- <link rel="stylesheet" href="/dist/APlayer.min.css">
<div id="aplayer"></div>
<script type="text/javascript" src="/dist/APlayer.min.js"></script>
<script type="text/javascript" src="/dist/music.js"></script> -->
</body>

</html>
